En
Mathématiques et plus particulièrement en
Algèbre linéaire, une matrice carrée
A d'ordre
n est dite
inversible ou
régulière ou encore
non singulière, s'il existe une matrice
B d'ordre
n telle que
- AB = BA = In,
où In désigne la matrice unité d'ordre n. La multiplication est la multiplication ordinaire des matrices. Dans ce cas, la matrice B est unique et est appelée la matrice inverse de A, et est notée A −1.
Une matrice carrée qui n'est pas inversible est dite non inversible ou singulière. Tandis que dans les cas usuels, ces matrices sont à coefficients réels ou complexes, toutes ces définitions peuvent être données pour des matrices à coefficients dans un corps (et plus généralement dans un anneau) quelconque.
Théorème des matrices inversibles
Soit
A une matrice carrée d'ordre
n à coefficients dans un corps
K (par exemple le corps des réels
R). Les propositions suivantes sont équivalentes (on note
X une matrice colonne à
n éléments dans
K) :
- A est inversible,
- A est équivalente à la matrice unité In d'ordre n,
- A possède n pivots,
- le déterminant de A est non nul : det (A) ≠ 0,
- 0 n'est pas valeur propre de A,
- le rang de A est égal à n,
- le système homogène AX = 0 a pour unique solution X = 0,
- pour tout b dans M n 1 (K), le système linéaire AX = b a au plus une solution,
- pour tout b dans M n 1 (K), le système linéaire AX = b a au moins une solution,
- pour tout b dans M n 1 (K), le système linéaire AX = b a exactement une solution,
- les colonnes de A, considérées comme des vecteurs de K n , sont linéairement indépendantes,
- les colonnes de A, considérées comme des vecteurs de K n , engendrent K n ,
- les colonnes de A, considérées comme des vecteurs de K n , forment une base de K n ,
- l'endomorphisme canoniquement associé à A (c’est-à-dire l'application linéaire de K n dans lui-même, notée can(A), qui a pour matrice A en base canonique) est injectif,
- l'endomorphisme can(A) canoniquement associé à A est surjectif,
- l'endomorphisme can(A) canoniquement associé à A est bijectif,
- la matrice A est inversible à gauche, c'est-à-dire qu'il existe une matrice B carrée d'ordre n telle que BA = In,
- la matrice A est inversible à droite, c'est-à-dire qu'il existe une matrice B carrée d'ordre n telle que AB = In,
- la transposée tA de A est inversible,
- il existe un polynôme annulateur de A dont 0 n'est pas racine,
- 0 n'est pas racine du polynôme minimal de A.
Plus généralement, une matrice carrée à coefficients dans un anneau commutatif unifère est inversible si et seulement si son déterminant est inversible dans cet anneau.
Autres propriétés et résultats
La matrice inverse d'une matrice inversible
A est elle-même inversible, et
- (A −1)−1 = A
Le produit de deux matrices inversibles
A et
B (de même ordre) est une matrice inversible et son inverse est donné par la relation suivante (on remarquera que l'ordre des matrices est inversé)
- (AB)−1 = B −1A −1
Le produit d'un scalaire non nul k et d'une matrice inversible A est inversible, et son inverse est égal au produit de l'inverse de ce scalaire et de l'inverse de cette matrice.
- (kA)−1 = k−1A−1
Des deux premières de ces propriétés, il résulte que l'ensemble des matrices carrées inversibles d'ordre n constitue un groupe multiplicatif (dont l'élément neutre est la matrice unité d'ordre n); on l'appelle groupe général linéaire et on le note habituellement GL n (K), où K est le corps des scalaires.
En général, « presque toutes » les matrices carrées d'ordre n sont inversibles. Sur le corps des nombres réels, cela peut être formulé de façon plus précise: l'ensemble des matrices non inversibles, considéré comme sous-ensemble de R n × n , est négligeable, c'est-à -dire de Mesure de Lebesgue nulle. Intuitivement, cela signifie que si l'on choisit au hasard une matrice carrée d'ordre n à coefficients réels, la probabilité pour qu'elle soit non inversible est égale à zéro. La raison en est que les matrices non inversibles sont les racines (ou zéros) d'une fonction polynomiale donnée par le déterminant.
L'ensemble des matrices inversibles est dense dans l'ensemble des matrices carrées réelles ou complexes. En effet on peut approcher toute matrice de Mn(R) (ou Mn(C)) par une suite de matrices inversibles. Par exemple, considérons la suite de matrices de terme général M(k)=M-(1/k).I. Le déterminant de M(k) est une fonction polynomiale en k, il s'annule donc un nombre fini de fois. Ainsi il existe K tel que pour tout k > K , det(M(k)) soit non nul, et donc que M(k) soit inversible. On a donc bien en considérant la suite (M(k)) pour k>K une suite de matrices inversibles qui converge vers M une matrice quelconque, ce qui justifie la densité.
Méthodes d'inversion
Avant de décrire les méthodes usuelles d'inversion, notons qu'en pratique, il n'est pas nécessaire de calculer l'inverse d'une matrice pour résoudre un système d'équations linéaires. Il est toutefois nécessaire que la matrice considérée soit inversible. Des méthodes de décomposition comme la
Décomposition LU sont
beaucoup plus rapide que l'inversion.
Élimination de Gauss-Jordan
Article détaillé : .Méthode des cofacteurs
L'inverse d'une matrice A s'écrit sous une forme très simple à l'aide de la matrice complémentaire
t { com A }A -1 = | 1 ––––––– det A | t { com A } = | 1 ––––––– det A | t(C ij) = | 1 ––––––– det A |
| ( | ┌ | nC 11 | C 21 | … | C j 1 | ┐ | ) | | nC 12 | | | C j 2 | | | n ⋮ | | | ⋮ | | | nC 1i | … | … | C ji | | └ | n | | | | ┘ |
|
où { det A } est le déterminant de A, { com A } est la Comatrice de A et t {A } est la Matrice transposée de A.
Cette écriture permet un calcul aisé de l'inverse d'une matrice de petite dimension. Pour des matrices de plus grande dimensions, cette méthode essentiellement récursive devient inefficace.
Inversion des matrices 2 x 2
L
équation des cofacteurs ci-dessus permet de calculer l'inverse des matrices de dimensions 2 x 2 : si ad - bc ≠ 0, nA = | | , n n com A = | | , n n t {dt }(t) = - A -1 (t) | dA ––– dt | (t) A -1 (t). |
|
Cette relation découle de l'identité
∀ t ∈ I, A -1 (t) A (t) = I n .
Généralisations
Certaines des propriétés des matrices inverses sont aussi vérifiées par les
matrices pseudo-inverses qui peuvent être définies pour n'importe quelle matrice, même pour celles qui ne sont pas carrées.
Au cas où la matrice X n'est pas carrée, il est possible d'inverser grâce à une prémultiplication par le groupe de matrices (X 'X) -1 X ' ou une postmultiplication par X '(XX ') -1
On a bien:
(X 'X) -1 X 'X = I
XX '(XX ') -1 = I
Implementation en Java
Le code ci-dessous implémente la méthode du pivot de Gauss-Jordan pour inverser une matrice carrée inversible. Le type de retour de la fonction étant booléen, si la matrice n'est pas inversible, elle retourne "false", autrement elle retourne "true". Cette fonction utilise une fonction de permutation des lignes (conformément à la methode du pivot)en fin de code. Cette fonction de permutation est implémentée ci-dessous également.
<source lang=java> public static boolean inversion(double[][] M, int m, int n, double[][] B) { if (m != n) { System.out.println("Matrice non carree"); return false; } Vector<Integer> I = new Vector<Integer>(); Vector<Integer> J = new Vector<Integer>(); double[][] A = new double[m][n]; //Copie de M dans A et Mise en forme de B : B=I for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { A[i][j] = M[i][j]; if (i==j) B[i][j] = 1; else B[i][j] = 0; } } //Parametres permettant l'arret premature des boucles ci-dessous si calcul impossible boolean bk = true; boolean bl = true; //Controle que la recherche de pivot se deroule bien int cnt_row = 0; int cnt_col = 0; //parametre de stockage de coefficients double a, tmp; for (int k=0; k<n && bk; k++) { if (!I.contains(k)) { I.addElement(k); cnt_row++; bl = true; for (int l=0; l<n && bl; l++) { if (!J.contains(l)) { a = A[k][l]; if (a != 0) { J.addElement(l); cnt_col++; bl = false; //permet de sortir de la boucle car le pivot a ete trouve for (int p=0; p<n; p++) { if (p != k) { tmp = A[p][l]; for (int q=0; q<n; q++) { A[p][q] = A[p][q] - A[k][q]*(tmp/a); B[p][q] = B[p][q] - B[k][q]*(tmp/a); } } } } } } if (cnt_row != cnt_col) { //Matrix is singular"; bk = false; k = n; //Pas de pivot possible, donc pas d'inverse possible! } } } if (!bk) { //Le pivot n'a pas pu etre trouve precedemment, ce qui a donne bk = false System.out.println("Matrix is singular"); for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { B[j][i] = M[j][i]; } } return false; } else { //Reorganisation des colonnes de sorte que A=I et B=Inv(M). Methode de Gauss-Jordan for (int l=0; l<n; l++) { for (int k=0; k<n; k++) { a = A[k][l]; if (a != 0) { A[k][l] = 1; for (int p=0; p<n; p++) { B[k][p] = B[k][p]/a; } if (k != l) { exchange_row(A,k+1,l+1,n,n); exchange_row(B,k+1,l+1,n,n); } k = n; //Pour sortir de la boucle car le coefficient non nul a ete trouve } } } return true; } } </source>
La fonction ci-dessous permute deux lignes d'une matrice donnée. A noter que dans une matrice à m lignes et n colonnes, les numéros de lignes à permuter se notent k et l où k et l sont strictement positifs et inférieurs ou égaux à m.
<source lang=java>
/*To exchange two rows in a matrix*/
public static void exchange_row(double[][] M, int k, int l, int m, int n) {
if (k<=0 @ l<=0 @ k>n @ l>n @ k==l) return; double tmp; for (int j=0; j<n; j++) { tmp = M[k-1][j]; M[k-1][j] = M[l-1][j]; M[l-1][j] = tmp; } } </source>
Voir aussi
Liens externes